package code1.array;

/**
 * 原题链接：https://leetcode.cn/problems/spiral-matrix-ii/
 */
public class P59 {
    //模拟过程
    public static int[][] generateMatrix(int n) {
        int[][] matrix=new int[n][n];
        int step=0,count=0;     //step表示当前是第几步，count表示当前是第几圈，都是从0开始
        int num=1;              //num为矩阵里按顺序填的数
        while(num<=n*n){
            if(step%4==0){
                //从左往右
                for(int i=count;i<n-count;i++,num++){
                    matrix[count][i]=num;
                }
            }else if(step%4==1){
                //从上往下
                for(int i=count+1;i<n-count-1;i++,num++){
                    matrix[i][n-count-1]=num;
                }
            }else if(step%4==2){
                //从右往左
                for(int i=n-count-1;i>=count;i--,num++){
                    matrix[n-count-1][i]=num;
                }
            }else if(step%4==3){
                //从下往上
                for(int i=n-2-count;i>=count+1;i--,num++){
                    matrix[i][count]=num;
                }
                count++;            //最后一段执行完毕，圈数++
            }
            step++;         //步数++
        }
        return matrix;
    }

    public static void main(String[] args) {
        int[][] ans=generateMatrix(3);
        for(int i=0;i< ans.length;i++){
            for(int j=0;j<ans[i].length;j++){
                System.out.print(ans[i][j]+" ");
            }
            System.out.println();
        }
    }
}
